package com.ruoyi.common.core.domain.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单信息实体类
 *
 * @author ruoyi
 */
public class OrderInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 订单ID */
    private Long id;

    /** 订单时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date orderTime;

    /** 车牌号码 */
    private String carNum;

    /** 会员手机号 */
    private String memberPhone;

    /** 订单金额（元） */
    private BigDecimal orderAmount;

    /** 实付金额（元） */
    private BigDecimal actPay;

    /** 会员减免（元） */
    private BigDecimal memberDisc;

    /** 积分抵扣（元） */
    private BigDecimal pointsDedu;

    /** 优惠券抵扣（元） */
    private BigDecimal couponDedu;

    /** 支付类型（1=微信，2=支付宝，3=云闪付） */
    private Integer payType;

    /** 进场时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date entryTime;

    /** 出场时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date exitTime;

    /** 业务订单编号 */
    private String busOrderNum;

    /** 支付订单编号 */
    private String payOrderNum;

    /** 订单状态（1=已完成，2=已超时，3=已退款） */
    private Integer orderStatus;

    /** 电子发票状态（1=已开具，2=未开具） */
    private Integer eInvoiceStatus;

    /** 创建时间 */
    private Date createTime;

    /** 更新时间 */
    private Date updateTime;

    public OrderInfo() {}

    public OrderInfo(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Date getOrderTime() {
        return orderTime;
    }

    public void setOrderTime(Date orderTime) {
        this.orderTime = orderTime;
    }

    public String getCarNum() {
        return carNum;
    }

    public void setCarNum(String carNum) {
        this.carNum = carNum;
    }

    public String getMemberPhone() {
        return memberPhone;
    }

    public void setMemberPhone(String memberPhone) {
        this.memberPhone = memberPhone;
    }

    public BigDecimal getOrderAmount() {
        return orderAmount;
    }

    public void setOrderAmount(BigDecimal orderAmount) {
        this.orderAmount = orderAmount;
    }

    public BigDecimal getActPay() {
        return actPay;
    }

    public void setActPay(BigDecimal actPay) {
        this.actPay = actPay;
    }

    public BigDecimal getMemberDisc() {
        return memberDisc;
    }

    public void setMemberDisc(BigDecimal memberDisc) {
        this.memberDisc = memberDisc;
    }

    public BigDecimal getPointsDedu() {
        return pointsDedu;
    }

    public void setPointsDedu(BigDecimal pointsDedu) {
        this.pointsDedu = pointsDedu;
    }

    public BigDecimal getCouponDedu() {
        return couponDedu;
    }

    public void setCouponDedu(BigDecimal couponDedu) {
        this.couponDedu = couponDedu;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public Date getEntryTime() {
        return entryTime;
    }

    public void setEntryTime(Date entryTime) {
        this.entryTime = entryTime;
    }

    public Date getExitTime() {
        return exitTime;
    }

    public void setExitTime(Date exitTime) {
        this.exitTime = exitTime;
    }

    public String getBusOrderNum() {
        return busOrderNum;
    }

    public void setBusOrderNum(String busOrderNum) {
        this.busOrderNum = busOrderNum;
    }

    public String getPayOrderNum() {
        return payOrderNum;
    }

    public void setPayOrderNum(String payOrderNum) {
        this.payOrderNum = payOrderNum;
    }

    public Integer getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(Integer orderStatus) {
        this.orderStatus = orderStatus;
    }

    public Integer getEInvoiceStatus() {
        return eInvoiceStatus;
    }

    public void setEInvoiceStatus(Integer eInvoiceStatus) {
        this.eInvoiceStatus = eInvoiceStatus;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("orderTime", getOrderTime())
                .append("carNum", getCarNum())
                .append("memberPhone", getMemberPhone())
                .append("orderAmount", getOrderAmount())
                .append("actPay", getActPay())
                .append("memberDisc", getMemberDisc())
                .append("pointsDedu", getPointsDedu())
                .append("couponDedu", getCouponDedu())
                .append("payType", getPayType())
                .append("entryTime", getEntryTime())
                .append("exitTime", getExitTime())
                .append("busOrderNum", getBusOrderNum())
                .append("payOrderNum", getPayOrderNum())
                .append("orderStatus", getOrderStatus())
                .append("eInvoiceStatus", getEInvoiceStatus())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
